package com.xx.sg.sso;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Model: sys_user -- 用户表
 * @author click33
 */
@Data
@Accessors(chain = true)
public class SysUser implements Serializable {

	// ---------- 模块常量 ----------
	/**
	 * 序列化版本id
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 此模块对应的表名
	 */
	public static final String TABLE_NAME = "sys_user";
	/**
	 * 此模块对应的权限码
	 */
	public static final String PERMISSION_CODE = "sys-user";


	// ---------- 表中字段 ----------
	/**
	 * id号
	 */
	private Long id;

	/**
	 * 用户登录名
	 */
	private String username;

	/**
	 * 账号密码
	 */
	private String password;

	/**
	 * 用户头像
	 */
	private String avatar;

	/**
	 * 个人介绍(签名)
	 */
	private String intro;

	/**
	 * 用户年龄
	 */
	private Integer age;

	/**
	 * 用户性别 (1=男,2=女,3=未知)
	 */
	private Integer sex;

	/**
	 * 手机号
	 */
	private String phone;

	/**
	 * 用户邮箱
	 */
	private String email;

	/**
	 * 账号状态(1=正常,2=禁用)
	 */
	private Integer status;

	/**
	 * 创建时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date createTime;

	/**
	 * 上次登陆时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date loginTime;

	/**
	 * 上次登陆IP
	 */
	private String loginIp;

	/**
	 * 登陆次数
	 */
	private Integer loginCount;

	/**
	 * 是否删除（1=否,2=是）
	 */
	private Integer isDel;


	/** 防止密码被传递到前台  */
    public String getPassword(){
    	return "********";
    }
    /** 获取真实密码   */
    @JsonIgnore()
    public String getPassword2(){
    	return this.password;
    }





	private String userId;

	/**
	 * 真实姓名
	 */
	private String trueName;

	/**
	 * 部门名称
	 */
	private String deptNames;

	/**
	 * 部门id列表
	 */
	private String deptIdList;

	/**
	 * 祖籍列表名称
	 */
	private String ancestorsList;

	private List<String> deptId = new ArrayList<>();

	/**
	 * 安全级别
	 */
	private Integer securityLevel;

	/**
	 * 排序
	 */
	private Integer sort;

	/**
	 * 职务
	 */
	private String job;

	/**
	 * 岗位
	 */
	private String position;

	/**
	 * 身份证号
	 */
	private String card;

	/**
	 * 直接上级ID
	 */
	private String superiorId;

	/**
	 * 直接上级名称
	 */
	private String superiorName;

	/**
	 * 更新时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updateTime;

	/**
	 * 上次密码更新时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updatePwdTime;

	private Long[] clientIds;

	private String sysUserDeptList;

}
